# conding = utf-8
import logging.handlers
import time


class Logger:

    __logger : logging.Logger = None

    @classmethod
    def instance(cls,name="root",filename="logback"):
        '''
        封装的Log日志对象
        :param name: 模块名称
        :param filename: 文件名称
        :return:
        '''
        if cls.__logger is None:
            cls.__logger = logging.getLogger(name)  # 如果没有模块名称默认为root
            # 设置日志输出级别
            cls.__logger.setLevel(logging.DEBUG)
            # 设置日志输出格式
            fmt = logging.Formatter(
                fmt="%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d)] - %(message)s")
            # 设置控制台对象
            console = logging.StreamHandler()
            console.setFormatter(fmt=fmt)
            # 设置文件输出对象
            file = logging.handlers. \
                TimedRotatingFileHandler(f"./{filename}-{time.strftime('%Y_%m_%d')}.log")
            file.setFormatter(fmt=fmt)
            # 将控制台对象加入到日志对象中
            cls.__logger.addHandler(console)
            # 将文件输出对象加入到日志对象中
            cls.__logger.addHandler(file)
        return cls.__logger


